//package com.example.rxtxdemo.rxtx1;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import purejavacomm.SerialPort;
//import purejavacomm.SerialPortEvent;
//import purejavacomm.SerialPortEventListener;
//
//import java.io.IOException;
//
//public class SerialResquest {
//
//	private static Logger logger = LoggerFactory.getLogger(SerialResquest.class);
//
//
//	public static void resquest(String portName, Integer baudrate, Integer dataBits, Integer stopBits,
//			Integer parity,byte[] data) throws Exception {
//		SerialPort serialPort;
//		if (!GlobalCache.smap.containsKey(portName)) {
//			GlobalCache.bmap.put(portName, false);
//			serialPort = SerialTool.openPort(portName, baudrate, dataBits, stopBits, parity);
//			GlobalCache.smap.put(portName, serialPort);
//			SerialTool.addListener(new SerialPortEventListener() {
//
//				@Override
//				public void serialEvent(SerialPortEvent event) {
//					try {
//						Thread.sleep(50);
//					} catch (InterruptedException e1) {
//						logger.error("SerialResquest 监听异常！"+e1);
//					}
//					switch (event.getEventType()) {
//					case SerialPortEvent.DATA_AVAILABLE:
//						byte[] readBuffer = null;
//						int availableBytes = 0;
//						try {
//							availableBytes = serialPort.getInputStream().available();
//							if (availableBytes > 0) {
//								try {
//									readBuffer = SerialTool.readFromPort(serialPort);
//									GlobalCache.bmap.put(portName, true);
//									GlobalCache.dmap.put(portName, readBuffer);
//								} catch (Exception e) {
//									logger.error("读取推送信息异常！"+e);
//								}
//							}
//						} catch (IOException e) {
//							logger.error("读取流信息异常！"+e);
//						}
//					}
//				}
//
//			}, serialPort);
//		}else {
//			serialPort = GlobalCache.smap.get(portName);
//		}
//		SerialTool.sendToPort(data, serialPort);
//	}
//
//	public static byte[] response(String portName) throws InterruptedException {
//		/*if (!GlobalCache.dmap.containsKey(portName)) {
//			return null;
//		}*/
//		Thread.sleep(100);
//		int i =0;
//		while (!GlobalCache.bmap.get(portName)) {
//			Thread.sleep(100);
//			if (i++>30) {
//				return new byte[0];
//			}
//		}
//		GlobalCache.bmap.put(portName, false);
//		return GlobalCache.dmap.get(portName);
//	}
//
//	public static void close(String portName) throws IOException {
//		SerialTool.closePort(GlobalCache.smap.get(portName));
//		GlobalCache.smap.remove(portName);
//	}
//
//}
